И так перейдем к примеру решения данной проблемы.

В папку /protected/config/ добавим 2 файла: mainLocal.php и mainServer.php.

Теперь у нас есть 3 файла с настройками. main.php - содержит конфигурацию по умолчанию. mainLocal.php - конфигурация для локальной машины. mainServer.php - конфигурация для сервера.

В файле mainLocal.php мы можем использовать настройки соединения с локальной базой данных, выводить отладочную информацию, включить модуль Gii и многое другое.

Пример содержания файла mainLocal.php:

<?php

return CMap::mergeArray(
    require(dirname(__FILE__) . '/main.php'), array(
        'modules' => array(
            'gii' => array(
                'class' => 'system.gii.GiiModule',
                'password' => '123',
                'ipFilters' => array('127.0.0.1', '::1'),
            ),
        ),
        'components' => array(
            'db' => array(
                'connectionString' => 'mysql:host=localhost;dbname=localDBName',
                'emulatePrepare' => true,
                'username' => 'localDBUser',
                'password' => 'localBDPassword',
                'charset' => 'utf8',
                'enableProfiling' => true,
            ),
        ),
        'params' => array(
            //Дополнительные параметры для локальной машины ...
        )
    )
);

Файл mainServer.php будет содержать настройки подключения к рабочей базе данных и другие необходимые настройки приложения на сервере.

Пример содержания файла mainServer.php:

<?php

return CMap::mergeArray(
    require(dirname(__FILE__) . '/main.php'), array(
        'components' => array(
            'db' => array(
                'connectionString' => 'mysql:host=localhost;dbname=serverDBName',
                'emulatePrepare' => true,
                'username' => 'serverDBUser',
                'password' => 'serverDBPassword',
                'charset' => 'utf8',
                'enableProfiling' => true,
            ),
        ),
        'params' => array(
            //Дополнительные параметры для сервера ...
        )
    )
);

В корневой index.php добавим проверку на то, где открывается приложение, локально или на сервере и какой файл конфигураций подключать:

<?php

$yii = dirname(__FILE__) . '/framework/yii.php'; // Если путь к yii отличается, то перенесите это строку в условие

if($_SERVER['REMOTE_ADDR'] == "127.0.0.1") { 
/**
* В зависимости от настроек, боевой сервер может отдавать ip не внешний, а локальный (127.0.0.1), 
* тогда на сервере будет подключаться файл mainLocal.php, соответственно приложение не будет работать.
* Это можно избежать заменив условие проверки на:
* if ($_SERVER['HTTP_HOST'] != 'my-site-host.domain') {
*/
    defined('YII_DEBUG') or define('YII_DEBUG', true);
    defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3);    
    $config = dirname(__FILE__) . '/protected/config/mainLocal.php';
} else {
    define('YII_DEBUG', false);
    $config=dirname(__FILE__) . '/protected/config/server_main.php';
    define('YII_ENABLE_ERROR_HANDLER', false);
    define('YII_ENABLE_EXCEPTION_HANDLER', false);
}
require_once($yii);
$app = Yii::createWebApplication($config)->run();

Вот и все, теперь приложение будет использовать нужные настройки в зависимости от места запуска.